clj-http
এর ব্যবহারClojure একটি ফাংশনাল প্রোগ্রামিং ভাষা, এবং এর মধ্যে নেটওয়ার্কিং ও HTTP রিকোয়েস্ট ম্যানেজ করার জন্য clj-http
লাইব্রেরি খুবই জনপ্রিয়। clj-http
হল একটি HTTP ক্লায়েন্ট লাইব্রেরি যা Clojure-এ সহজভাবে HTTP রিকোয়েস্ট পাঠাতে এবং সাড়া গ্রহণ করতে সহায়ক। এটি মূলত Apache HttpClient এর উপর ভিত্তি করে তৈরি, এবং Clojure-এ HTTP যোগাযোগের জন্য সরল, কিন্তু শক্তিশালী একটি ইন্টারফেস প্রদান করে।
clj-http
ইনস্টলেশনক্লোজারে clj-http
ব্যবহার করতে হলে প্রথমে এটি আপনার প্রজেক্টে অন্তর্ভুক্ত করতে হবে। lein
বা deps.edn
ব্যবহার করে আপনি এটি ইনস্টল করতে পারেন।
lein
এর মাধ্যমে ইনস্টলেশন:project.clj
ফাইলে clj-http
কে ডিপেন্ডেন্সি হিসেবে যুক্ত করুন:
(defproject my-project "0.1.0-SNAPSHOT"
:dependencies [[clj-http "3.12.3"]])
এখানে clj-http
এর সংস্করণ চেক করতে হবে এবং সঠিক সংস্করণ নির্বাচন করতে হবে।
deps.edn
এর মাধ্যমে ইনস্টলেশন:deps.edn
ফাইলে ডিপেন্ডেন্সি যুক্ত করতে:
{:deps {clj-http {:mvn/version "3.12.3"}}}
clj-http
ব্যবহার করার মূল ধারণাclj-http
এ HTTP রিকোয়েস্ট পাঠাতে clj-http.client
নামস্পেসের ফাংশনগুলো ব্যবহার করা হয়। সাধারণত HTTP রিকোয়েস্ট পাঠাতে দুটি মূল ফাংশন ব্যবহৃত হয়: get
এবং post
।
GET রিকোয়েস্ট HTTP এর অন্যতম সাধারণ রিকোয়েস্ট, যেটি সাধারণত সার্ভার থেকে তথ্য প্রাপ্তির জন্য ব্যবহার হয়।
(require '[clj-http.client :as client])
(def response (client/get "https://jsonplaceholder.typicode.com/posts"))
(println (:status response)) ; আউটপুট: 200
(println (:body response)) ; আউটপুট: JSON ডাটা
এখানে, client/get
ফাংশনটি URL থেকে GET রিকোয়েস্ট পাঠায় এবং এর রেসপন্স একটি মানচিত্র (map) আকারে ফেরত দেয়। আপনি রেসপন্সের স্ট্যাটাস কোড এবং বডি থেকে তথ্য বের করতে পারেন।
POST রিকোয়েস্ট ব্যবহার করা হয় সার্ভারে তথ্য পাঠানোর জন্য। POST রিকোয়েস্টের সাথে সাধারণত একটি বডি থাকে, যেখানে আপনি ডেটা পাঠাতে পারেন।
(require '[clj-http.client :as client])
(def response (client/post "https://jsonplaceholder.typicode.com/posts"
{:form-params {:title "foo"
:body "bar"
:userId 1}}))
(println (:status response)) ; আউটপুট: 201
(println (:body response)) ; আউটপুট: JSON ডাটা
এখানে, client/post
ফাংশনটি POST রিকোয়েস্ট পাঠাতে ব্যবহৃত হয়েছে। :form-params
ব্যবহার করে আপনি POST রিকোয়েস্টের বডিতে ডেটা পাঠাচ্ছেন।
clj-http
আরও উন্নত কনফিগারেশন এবং হেডার সহ কাজ করতে পারে। যেমনঃ
(def response (client/get "https://jsonplaceholder.typicode.com/posts"
{:headers {"Authorization" "Bearer my-token"}}))
(println (:status response)) ; আউটপুট: 200
এখানে, Authorization
হেডারটি GET রিকোয়েস্টের সাথে পাঠানো হয়েছে।
(def response (client/get "https://jsonplaceholder.typicode.com/posts"
{:query-params {:userId 1}}))
(println (:status response)) ; আউটপুট: 200
এখানে, :query-params
ব্যবহার করে GET রিকোয়েস্টের জন্য কুয়েরি প্যারামিটার পাঠানো হয়েছে, যা URL এর অংশ হিসেবে যুক্ত হবে।
clj-http
JSON রেসপন্সের জন্য খুব সহজভাবে কাজ করতে পারে। আপনি রেসপন্সের বডি থেকে JSON ডাটা পার্স করতে পারছেন cheshire
লাইব্রেরি ব্যবহার করে।
(require '[clj-http.client :as client])
(require '[cheshire.core :as json])
(def response (client/get "https://jsonplaceholder.typicode.com/posts"))
(def body (json/parse-string (:body response) true))
(println (first body)) ; আউটপুট: প্রথম JSON অবজেক্ট
এখানে, cheshire.core/parse-string
ফাংশনটি JSON বডিকে Clojure ডেটা স্ট্রাকচারে রূপান্তরিত করেছে।
ক্লোজারে clj-http
ব্যবহার করার সময় রিকোয়েস্টের ত্রুটি (errors) হ্যান্ডেল করা অত্যন্ত গুরুত্বপূর্ণ। clj-http
try
এবং catch
ব্লক ব্যবহার করে ত্রুটি হ্যান্ডেল করার জন্য উপযুক্ত।
(require '[clj-http.client :as client])
(try
(def response (client/get "https://jsonplaceholder.typicode.com/invalid-url"))
(println (:status response))
(catch Exception e
(println "Error occurred:" (.getMessage e))))
এখানে, যদি কোনো ত্রুটি ঘটে, তবে catch
ব্লকটি সক্রিয় হবে এবং একটি ত্রুটি বার্তা প্রিন্ট করবে।
client/get
ফাংশন ব্যবহার করে API থেকে তথ্য পড়া।client/post
ফাংশন ব্যবহার করে সার্ভারে তথ্য পাঠানো।cheshire
লাইব্রেরি দিয়ে JSON রেসপন্স পার্স করা।clj-http
হল Clojure-এ HTTP রিকোয়েস্ট এবং রেসপন্স ম্যানেজ করার জন্য একটি খুব শক্তিশালী এবং সহজ ব্যবহারযোগ্য লাইব্রেরি।
common.read_more